﻿using System;
using System.Collections;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.IO;

namespace Obligatorio2013
{
    public class AdminVehiculos : ManejadorArchivos
    {
        private Int32 contador_vehiculos = 0; // AUMENTA CON CADA VEHICULO CREADO, PARA ASIGNARLO A LA ID DEL VEHICULO-
        private ArrayList listaVehiculos = new ArrayList();
        public ArrayList ListaVehiculos
        { get { return listaVehiculos; } }


        // Agrega desde archivo
        public ArrayList AgregarDesdeArchivo(ArrayList texto)
        {
            foreach (String line in texto)
            {
                Char[] separadores = new Char[] { ',' };
                String[] informacion = line.Split(separadores); // Devuelve un tipo lista
                // Marca, Modelo, Matricula
                Vehiculo c = new Vehiculo(informacion[0], informacion[1], informacion[2]);
                this.AgregarVehiculo(c); // UTILIZA EL METODO AGREGAR QUE ESTA DEFINIDO MAS ABAJO.
            }

            return this.listaVehiculos;
        }


        // Agregar vehiculo
        public void AgregarVehiculo(Vehiculo v)
        {
            if (listaVehiculos.Count == 0)
            {
                this.contador_vehiculos += 1;
                v.Identificador = this.contador_vehiculos;
                listaVehiculos.Add(v);
            }
            else
            {
                foreach (Vehiculo c in this.listaVehiculos)
                {
                    Debug.Assert(v.Matricula != c.Matricula, " Vehiculo ya esta ingresado ");
                }
                this.contador_vehiculos += 1;
                v.Identificador = this.contador_vehiculos;
                listaVehiculos.Add(v);
            }
        }


        // Escribir archivo
        public void EscribirArchivo(String NomArchivo)
        {
            foreach (Vehiculo v in this.listaVehiculos)
            {
                ArrayList Datos_Vahiculos = v.Ficha();
                Escribir(NomArchivo, ((string)Datos_Vahiculos[0] + " " + (string)Datos_Vahiculos[1] + " " + (string)Datos_Vahiculos[2]));
            }
        }

        // Quitar vehiculo
        public void QuitarVehiculo(Int32 _id)
        {
            Debug.Assert(ListaVehiculos.Count != 0, "La lista de vehiculos esta vacia");
            Int32 cont = listaVehiculos.Count;

            foreach (Vehiculo c in listaVehiculos)
            {
                if (c.Identificador == _id)
                {
                    listaVehiculos.Remove(c);
                    break;
                }
            }
            Debug.Assert(cont - 1 == ListaVehiculos.Count, " El vehiculo no existe ");
        }


    }
}
